IfcOpenShell est une bibliothèque de logiciels open source (LGPL 3) qui aide les développeurs à travailler avec les classes de base de l'industrie [1] (Format de fichier IFC). Le format de fichier IFC peut être utilisé pour décrire les données de bâtiment et de construction. Le format est couramment utilisé pour la Building Information Modeling (BIM), par exemple, l'analyse des charges mécaniques et les études d'efficacité thermique et énergétique. IfcOpenShell est principalement une collection de bibliothèques C ++, cependant, comme elle a des liaisons Python, elle peut être intégrée à des programmes comme FreeCAD et Blender.
IfcOpenShell utilise OpenCASCADE en interne pour convertir la géométrie implicite des fichiers IFC en une géométrie explicite que d'autres packages de CAO peuvent comprendre, par exemple, STEP, OBJ et DAE.
Depuis la version 0.19, FreeCAD est capable d'importer des fichiers IFC tant que le module ifcopenshell
Python est disponible dans le système. De même, les ateliers Arch et BIM peuvent exporter un modèle de bâtiment au format IFC afin qu'il puisse être utilisé dans d'autres applications.
Pour vérifier que IfcOpenShell est installé sur votre système, essayez de l'importer depuis la console Python. La bibliothèque est correctement installée si aucun message d'erreur n'est renvoyé.
import ifcopenshell
IfcOpenShell peut être installé de différentes manières en fonction de votre système d'exploitation et de votre environnement Python. Dans le passé, IfcOpenShell était un peu difficile à installer car il devait être compilé pour votre système spécifique; Cependant, au moment d'écrire ces lignes (2020), il est plus facile de commencer à l'utiliser, car il est maintenant inclus avec FreeCAD dans de nombreuses distributions FreeCAD. En général, il est conseillé d'utiliser l'une de ces distributions précompilées et de ne la compiler vous-même que si vous êtes un utilisateur avancé.
BlenderBIM est un autre projet qui utilise IfcOpenShell. Ils fournissent des paquets IfcOpenShell à jour pour plusieurs plateformes. C'est la meilleure façon de s'assurer que vous avez une version récente d'IfcOpenShell.
Page d'installation de BlenderBIM IfcOpenShell : https://blenderbim.org/docs-python/ifcopenshell-python/installation.html
La manière la plus simple d'installer IfcOpenShell est d'utiliser pip. Une fois que pip est installé sur votre système, vous pouvez installer IfcOpenShell facilement à partir d'une fenêtre de terminal :
pip install ifcopenshell
Pour les systèmes Windows et MacOS, les distributions FreeCAD associées au gestionnaire de packages Conda incluent généralement IfcOpenShell et donc aucune autre installation n'est nécessaire. Prenez la distribution appropriée sur la page Téléchargements.
AppImage pour Linux est également basé sur Conda et inclut également IfcOpenShell.
S'il est disponible, vous pouvez installer IfcOpenShell à l'aide du gestionnaire de packages de votre distribution.
sudo apt install ifcopenshell
Cependant, veuillez noter que les packages fournis par plusieurs dépôts Linux ont tendance à être anciens et peuvent ne pas contenir les derniers développements du logiciel. Si vous voulez être sûr que vous utilisez le logiciel le plus récent, utilisez une distribution de FreeCAD basée sur Conda, une distribution IfcOpenShell précompilée, ou compilez IfcOpenShell vous-même.
Il existe un dépôt spécial du projet IfcOpenShell qui compile régulièrement les bibliothèques IfcOpenShell pour différents systèmes (Linux, Windows, MacOS), architectures (32 bits et 64 bits) et versions Python (2.7, 3.x). Pour utiliser ces bibliothèques pré-compilées, vous devez choisir la bonne version qui correspond à votre système d'exploitation, à votre architecture et aux nombres majeurs et mineurs pour le Python utilisé avec FreeCAD. Cela signifie que les deux premiers nombres doivent correspondre (Python 3.6 et 3.7 sont considérés comme des versions distinctes) tandis que le troisième (micro) n'a pas d'importance (Python 3.6.5 et 3.6.12 sont considérés comme identiques à des fins de compatibilité).
v0.6.0
.IfcOpenBot/IfcOpenShell/commits/v0.6.0
.Remarque: les exemples suivants supposent un système basé sur Debian/Ubuntu mais la procédure générale devrait fonctionner pour d'autres systèmes d'exploitation.
ifcopenshell/
.unzip ifcopenshell-python-36-v0.6.0-4baec57-linux64.zip
sys.path
dans la console Python.import sys
print(sys.path)
ifcopenshell/
dans votre répertoire personnel d'utilisateur.mv -t $HOME/.local/lib/python3.6/site-packages/ ifcopenshell/
site-packages/
ou d'un répertoire dist-packages/
pour les distributions Debian/Ubuntu.sudo mv -t /usr/local/lib/python3.6/dist-packages/ ifcopenshell/
Si le répertoire est correctement déplacé, vérifiez que le module ifcopenshell
est accessible depuis la console Python.
>>> import ifcopenshell
>>> print(ifcopenshell.version)
0.6.0b0
>>> print(ifcopenshell.__path__)
['/home/user/.local/lib/python3.6/site-packages/ifcopenshell']
Pour supprimer la bibliothèque installée, supprimez simplement le répertoire correspondant avec tous les modules à l'intérieur.
rm -rf $HOME/.local/lib/python3.6/site-packages/ifcopenshell/
sudo rm -rf /usr/local/lib/python3.6/dist-packages/ifcopenshell/
La compilation d'IfcOpenShell n'est recommandée que pour les utilisateurs avancés. Le processus est similaire à compiler FreeCAD sous Linux, donc si vous l'avez déjà fait, alors vous pouvez déjà avoir les prérequis nécessaires comme les fichiers de développement OpenCASCADE. Le processus utilise l'outil de configuration CMake pour produire un Makefile
personnalisé à utiliser avec l'outil Make.
Les instructions générales sont décrites dans le dépôt IfcOpenShell et sont les suivantes:
IfcConvert
.cmake
pour générer un Makefile
, puis démarrez la compilation en exécutant make
.ifcopenshell
Python dans le répertoire site-packages/
approprié afin qu'il soit trouvé par FreeCAD.Remarque: les exemples suivants supposent un système basé sur Debian/Ubuntu, mais la procédure générale devrait fonctionner pour d'autres systèmes d'exploitation. Par exemple, dans Debian, les bibliothèques partagées se trouvent normalement dans /usr/lib/x86_64-linux-gnu/
alors que dans d'autres distributions, cela peut être /usr/lib64/
donc les chemins devraient être ajusté en conséquence.
Installez les outils de compilation de base.
sudo apt install git cmake gcc g++ libboost-all-dev
Obtenez le code source du projet et placez-le dans un répertoire personnalisé auquel vous avez un accès en écriture complet.
Au moment d'écrire ces lignes (2020), la branche principale du projet IfcOpenShell ne contient pas le dernier code, nous devons donc cloner une branche spécifique.
git clone https://github.com/IfcOpenShell/IfcOpenShell -b v0.6.0 IfcOpenShell-source
Installez les fichiers de développement de OpenCASCADE.
sudo apt install libocct*-dev
Qui s'étend à
sudo apt install libocct-data-exchange-dev libocct-draw-dev libocct-foundation-dev libocct-modeling-algorithms-dev libocct-modeling-data-dev libocct-ocaf-dev libocct-visualization-dev
Vous pouvez également utiliser l'édition communautaire (OCE) d'OpenCASCADE, cependant, veuillez noter que cette version est ancienne et n'est plus recommandée par FreeCAD à partir de 2020.
Installez les fichiers de développement d'OpenCOLLADA.
sudo apt install opencollada-dev
Si les fichiers sont trop anciens dans votre distribution, vous pouvez également compiler les bibliothèques vous-même. La procédure est décrite dans le dépôt principal, KhronosGroup/OpenCOLLADA. Elle est très simple car elle ne nécessite que les fichiers de développement libpcre3
et libxml2
.
sudo apt install libpcre3-dev libxml2-dev
git clone https://github.com/KhronosGroup/OpenCOLLADA OpenCOLLADA-source
mkdir -p OpenCOLLADA-build
cd OpenCOLLADA-build
cmake ../OpenCOLLADA-source
make -j 3
sudo make install
Pour une utilisation avec FreeCAD, vous avez besoin du wrapper Python qui utilise SWIG pour générer les interfaces appropriées à partir des classes C ++.
sudo apt-get install python-all-dev swig
Il est recommandé d'effectuer la configuration et la compilation dans un répertoire build spécifique séparé du répertoire source.
mkdir -p IfcOpenShell-build
cd IfcOpenShell-build
cmake ../IfcOpenShell-source/cmake/
Notez que le fichier CMakeLists.txt
qui pilote CMake se trouve dans le sous-répertoire cmake/
du répertoire source.
En fonction de votre distribution Linux et de la façon dont vous avez installé les dépendances, vous devrez peut-être définir certaines variables CMake afin que les bibliothèques soient trouvées correctement.
Si vous avez compilé manuellement OpenCASCADE, ou si les bibliothèques ne sont pas dans un répertoire standard, vous devrez peut-être définir les variables appropriées.
cmake \
-DOCC_INCLUDE_DIR=/usr/include/opencascade \
-DOCC_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
../IfcOpenShell-source/cmake/
Par défaut, le système build attend l'édition communautaire (OCE) d'OpenCASCADE (/usr/include/oce /
), cependant, veuillez noter que cette version est ancienne et n'est plus recommandée par FreeCAD à partir de 2020. C'est pourquoi l'installation des fichiers de développement de la version principale de OpenCASCADE (OCCT) est recommandée.
Si vous n'avez pas besoin du support OpenCOLLADA (fichiers DAE), vous devez le désactiver explicitement avec la variable COLLADA_SUPPORT
.
cmake \
...
-DCOLLADA_SUPPORT=FALSE \
../IfcOpenShell-source/cmake/
Si vous avez compilé manuellement OpenCOLLADA, ou si les bibliothèques ne sont pas dans un répertoire standard, vous devrez peut-être définir les variables appropriées pour OpenCOLLADA et pour la bibliothèque libpcre
.
cmake \
...
-DOPENCOLLADA_INCLUDE_DIR=/usr/include/opencollada \
-DOPENCOLLADA_LIBRARY_DIR=/usr/lib/opencollada \
-DPCRE_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
../IfcOpenShell-source/cmake/
Si les bibliothèques libxml2
ne sont pas trouvées pendant la compilation et la liaison, ou si les bibliothèques ne sont pas dans un répertoire standard, vous devrez peut-être définir les variables appropriées.
cmake \
...
-DLIBXML2_INCLUDE_DIR=/usr/include/libxml2 \
-DLIBXML2_LIBRARIES=/usr/lib/x86_64-linux-gnu/libxml2.so \
../IfcOpenShell-source/cmake/
Par défaut, le module Python ifcopenshell
sera installé dans un répertoire système site-packages/
. Il nécessite donc des privilèges de superutilisateur. En définissant la variable USERSPACE_PYTHON_PREFIX
, l'installation du module Python se fera dans le répertoire personnel de l'utilisateur.
cmake \
...
-DUSERSPACE_PYTHON_PREFIX=ON \
../IfcOpenShell-source/cmake/
Si vous souhaitez générer une liaison pour une version particulière de Python, définissez la variable PYTHON_EXECUTABLE
sur l'exécutable spécifique. N'oubliez pas que cette version doit être la même version de Python avec laquelle FreeCAD a été compilé.
cmake \
...
-DPYTHON_EXECUTABLE=/usr/bin/python3.6 \
../IfcOpenShell-source/cmake/
Dans un système Debian/Ubuntu typique, vous pouvez utiliser cette ligne pour configurer la compilation. Ajustez-le si nécessaire.
cmake -DOCC_INCLUDE_DIR=/usr/include/opencascade -DOCC_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu -DLIBXML2_INCLUDE_DIR=/usr/include/libxml2 -DLIBXML2_LIBRARIES=/usr/lib/x86_64-linux-gnu/libxml2.so -DUSERSPACE_PYTHON_PREFIX=ON ../IfcOpenShell-source/cmake/
Sans OpenCOLLADA:
cmake -DOCC_INCLUDE_DIR=/usr/include/opencascade -DOCC_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu -DCOLLADA_SUPPORT=FALSE -DLIBXML2_INCLUDE_DIR=/usr/include/libxml2 -DLIBXML2_LIBRARIES=/usr/lib/x86_64-linux-gnu/libxml2.so -DUSERSPACE_PYTHON_PREFIX=ON ../IfcOpenShell-source/cmake/
S'il n'y avait pas de message d'erreur lors de la configuration avec CMake, un Makefile
aurait dû être créé dans le répertoire build, vous pouvez donc procéder à la compilation des bibliothèques en exécutant make
.
make -j N
N
est le nombre de processeurs que vous attribuez au processus de compilation; choisissez au moins un de moins que le nombre total de cœurs de processeur dont vous disposez.
Toutes les options de configuration sont disponibles dans le fichier CMakeLists.txt
situé dans le répertoire IfcOpenShell-source/cmake/
. S'il y a des problèmes lors de l'exécution de CMake ou Make, recherchez ici d'autres options qui peuvent devoir être définies.
Dans toutes les instructions ci-dessus, au lieu de cmake
, l'interface graphique cmake-gui
peut être utilisée. Cela montrera rapidement les options disponibles dans la configuration.
cmake-gui ../IfcOpenShell-source/cmake/
Si la compilation réussit, vous devriez avoir un sous-répertoire examples/
avec l'exécutable IfcOpenHouse
nouvellement compilé. Exécutez cet utilitaire à partir du répertoire de compilation pour générer un exemple de fichier IFC.
example/IfcOpenHouse
L'exemple de fichier IFC doit apparaître dans le répertoire build et peut être utilisé comme entrée dans l'exécutable IfcConvert
également récemment compilé. Cet utilitaire prend en entrée un fichier IFC et produit en sortie un format différent comprenant OBJ, DAE si le support OpenCOLLADA était activé, STEP, IGS, XML, [[Draft_SVG/fr|SVG] ] ou un autre IFC.
./IfcConvert IfcOpenHouse.ifc
Si aucun fichier de sortie n'est spécifié, il créera par défaut un fichier OBJ et sa table de matériaux d'accompagnement (MTL).
Si la compilation ne signale aucune erreur, vous pouvez exécuter make install
pour copier les en-têtes, les bibliothèques compilées et les binaires dans leurs répertoires d'installation correspondants.
sudo make install
Par défaut, CMAKE_INSTALL_PREFIX
est /usr/local/
, donc tous les fichiers compilés seront mis sous ce répertoire, qui nécessite normalement des privilèges élevés.
/usr/local/bin/IfcConvert
/usr/local/bin/IfcGeomServer
/usr/local/include/ifcparse/*.h
/usr/local/include/ifcgeom/*.h
/usr/local/include/ifcgeom_schema_agnostic/*.h
/usr/local/include/serializers/{*.h,*.cpp}
/usr/local/include/serializers/schema_dependent/{*.h,*.cpp}
/usr/local/lib/libIfcGeom*.a
/usr/local/lib/libIfcParse.a
/usr/local/lib/libSerializers*.a
Le module Python ifcopenshell
requis pour FreeCAD n'est pas réellement présent dans le répertoire de construction; ce package est créé uniquement lorsque make install
est exécuté. Le package résultant est placé dans un répertoire site-packages/
ou dans un répertoire dist-packages/
pour les distributions Debian/Ubuntu.
/usr/lib/python3/dist-packages/ifcopenshell/
Si la variable USERSPACE_PYTHON_PREFIX
a été définie lors de l'étape de configuration de CMake, ifcopenshell
sera placé dans le répertoire site-packages/
de l'utilisateur.
$HOME/.local/lib/python3.6/site-packages/ifcopenshell/
Pour supprimer les bibliothèques installées, supprimez simplement les fichiers correspondants qui ont été installés et le répertoire ifcopenshell/
avec tous les modules à l'intérieur.
sudo rm -rf /usr/local/bin/IfcConvert
sudo rm -rf /usr/local/bin/IfcGeomServer
sudo rm -rf /usr/local/include/ifcparse/
sudo rm -rf /usr/local/include/ifcgeom/
sudo rm -rf /usr/local/include/ifcgeom_schema_agnostic/
sudo rm -rf /usr/local/lib/libIfcGeom*
sudo rm -rf /usr/local/lib/libIfcParse*
sudo rm -rf /usr/local/lib/libSerializers*
sudo rm -rf /usr/lib/python3/dist-packages/ifcopenshell/
Ou si la variable USERSPACE_PYTHON_PREFIX
a été définie.
sudo rm -rf $HOME/.local/lib/python3.6/site-packages/ifcopenshell/
La compilation de toute la distribution IfcOpenShell produit des binaires comme IfcConvert
et IfcGeomServer
ainsi que de nombreuses bibliothèques statiques (lib*.a
) dans le répertoire de construction. Cependant, pour FreeCAD, nous n'avons besoin que du module Python ifcopenshell
. Ce module n'est pas un fichier unique mais un "package", c'est-à-dire un répertoire contenant divers fichiers. Ce package ifcopenshell
est assemblé à partir des wrappers Python créés à l'intérieur de IfcOpenShell-build/ifcwrap/
et des modules Python dans le répertoire source d'origine IfcOpenShell-source/src/ifcopenshell-python/ifcopenshell/
.
../IfcOpenShell-build/ifcwrap/ifcopenshell_wrapper.py
../IfcOpenShell-build/ifcwrap/_ifcopenshell_wrapper.so
../IfcOpenShell-source/src/ifcopenshell-python/ifcopenshell/
Le module ifcopenshell
est créé en copiant le répertoire source d'origine et en y ajoutant les deux fichiers *ifcopenshell_wrapper*
.
cp -rt . ../IfcOpenShell-source/src/ifcopenshell-python/ifcopenshell/
cp -t ifcopenshell/ ifcwrap/ifcopenshell_wrapper.py ifcwrap/_ifcopenshell_wrapper.so
Désormais, ce répertoire peut être déplacé vers le système site-packages/
(dist-packages/
pour Debian/Ubuntu) spécifique à l'utilisateur pour le rendre disponible pour toutes les applications Python.
mv -t $HOME/.local/lib/python3.6/site-packages/ ifcopenshell/
Ou pour une installation à l'échelle du système:
sudo mv -t /usr/lib/python3/dist-packages/ ifcopenshell/
Maintenant, le module ifcopenshell
devrait être disponible pour être importé depuis une console Python.
>>> import ifcopenshell
>>> print(ifcopenshell.version)
0.6.0b0
>>> print(ifcopenshell.__path__)
['/home/user/.local/lib/python3.6/site-packages/ifcopenshell']
La bibliothèque IfcOpenShell comprend en fait une petite visionneuse graphique pour les fichiers IFC qui utilise PyQt5 et PythonOCC.
Pour lancer ce visualiseur depuis la console Python, la classe application
doit être instanciée et démarrée:
from ifcopenshell.geom.app import application
application().start()
Si la bibliothèque est déjà installée, l'ensemble du module peut également être exécuté à partir du terminal:
python3 /home/user/.local/lib/python3.6/site-packages/ifcopenshell/geom/app.py
Au moment de la rédaction de cet article (2020), seule la version PythonOCC compilée pour l'édition communautaire (OCE) OpenCASCADE était prise en charge.
Le projet IfcOpenShell a également développé "IFC Pipeline", un programme de traitement et de visualisation IFC auto-hébergé. Il fournit également une petite application Web qui accepte les téléchargements de fichiers, que tout le monde peut utiliser. Cela signifie que pour visualiser les données IFC, vous n'avez pas besoin d'installer localement IfcOpenShell ou d'autres visionneuses. Vous pouvez simplement charger votre fichier IFC dans ce système pour voir le résultat.
Contraintes